3日目 テキストファイルの操作
3日目
テキストファイルの扱い方
code:ポイント
・UNIXの標準的な改行コードはLF(ラインフィード)
・ファイルの先頭部分を表示するheadコマンド、最後を表示するtailコマンド
・テキストファイルを1画面ずつ表示するlessコマンド
・文字コードを変換するnkfコマンド
https://gyazo.com/e7f481f036aa5777f8b856d39ba69001
改行コードの種類
UNIXはLF以外を処理できない可能性があるので注意!
改行コードを調べるには、hexdump -c
16進数でダンプすると、CRは\r、LFは\nと表示される
改行コードの変換
tr -d "\r" < ファイルのパス
tr "\r" "\n" < ファイルのパス
headとtailコマンド
head 最初の数行 head -n 行数 テキストファイルのパス
tail 最後数行
行数を省略すると10になる
head -n 最後の行番号 テキストファイルのパス | tail -n 最後の行番号-最初の行番号+1
lessコマンド
Enter 1行進む
Y 1行戻る
D 半画面進む
W 半画面戻る
R 画面を再描画
G 最初の行へ
数字+G 指定した行へ
Shift+G 最後の行へ
lessコマンドの検索
/ ファイルの後方へ向かって検索
? ファイルの前方に向かって検索
Shift+N 同じ文字列を逆に検索
$less -proot /etc/passwd ファイルを開くと同時にrootの文字を検索
nkfコマンド 文字列の置換
$ nkf オプション --overwrite テキストファイルのパス
$ nkf --guess info.txt 文字コードと改行コードを調べる
grepコマンド テキストファイルから必要な行を取り出す
grep 見つける文字列 ファイルのパス
code:grepの例
$ cat mail.txt
test@example.com
test2@example.com
test3@example.com
newmail@example.com
$ grep new mail.txt
newmail@example.com
grepに引数指定しないと標準入力から読み込まれる
オプションがいろいろある
-i 大文字小文字を区別しない
-v 指定した文字列を含まない
複数のファイルを指定できる
スペースでつなげる
ワイルドカードを使えば特定のグループから目的の文字を探せる
複数の文字を探せる(OR検索)
-e オプションを使う
$ grep -e new -e mail mail.txt
複数の文字を検索(AND検索)
複数のgrepコマンドをパイプでつなぐ
正規表現とオプションを組み合わせて思い通りの検索を行う
fgreop 正規表現を使わないgrep
grepに-Fオプションでも同じ
エスケープが面倒な時とか
特殊文字を全く気にしなくてOK
egrep より高度な正規表現を使えるgrep
grepに-Eオプションでも同じ
vimについて
インサートモードへ移行するコマンドいろいろ
https://gyazo.com/543448c6b56c75ed2f3d5558a16ca883
行を追加して挿入は便利そう
カーソルの移動
https://gyazo.com/8f529dd2548e77421cf152b919c30224
vim起動中にシェルのコマンドを実行
:! シェルのコマンド
Vコマンド ビジュアルモード